1. Field of the Invention
The present invention relates to computer graphics.
2. Related Art
A wide variety of applications rely on computer graphics to generate images. An image is made up of an array of picture elements (pixels) and can be displayed on a display unit, such as, a monitor, screen, or cathode ray tube. Images often include graphical representations of objects. Many different types of computing devices with graphics capabilities are used to generate images. Such computing devices use graphics processing. A combination of software, firmware and/or hardware is used to implement graphics processing. For example, graphics processing including rendering can be carried out in a graphics card, graphics subsystem, graphics processor, graphics or rendering pipeline, and/or a graphics application programming interface (API) and libraries, such as, OPENGL.
In computer graphics, the geometry of an object is represented by primitives. Common primitives are points, lines, and polygons such as triangles or quads. Each primitive is made up of points called vertices. Each vertex includes information relating to the object and its graphical display as an image. For example, vertex information can include, but is not limited to, vertex coordinates, texture coordinates, an alpha value, and a depth value. Vertex coordinates define the location of a respective vertex in a three-dimensional coordinate space (x,y,z), such as, an object coordinate space or a world coordinate space. In this way, vertex coordinates define the geometry of an object surface. Texture coordinates are coordinates that map to an image in a two-dimensional space (s,t) or a three-dimension space (r,s,t). One way this image (also called a texture) is used in graphics processing is to provide additional surface detail to the object. An alpha value is used to represent transparency information. The depth value is used to define depth information.
Increasing demands are being made upon graphics processing. These demands include realism, speed and cost. Realistic images are desired to be rendered at real-time, interactive rates while avoiding burdensome graphics processing or hardware requirements. One way to achieve more realism is to use complex objects. Complex objects, however, can involve a large number of primitives. For example, hundred, thousands, or millions of triangles may be needed to represent complex objects. This increases the number of calculations and other processing work required to fully render the object.
Billboard image-based rendering algorithms have been used as an alternative to full rendering of objects. In such a billboard approach object data is rendered as if it were mapped or tiled on a flat plane or “billboard.” The billboard approach, however, sacrifices realism and geometry detail. Accordingly, its usefulness is limited to objects viewed from afar unless hundreds of pre-computed texture images are used exceeding the limits of texture hardware. The billboard approach also generally requires many pre-computed texture images.
There is a needed for a method and system for rendering that provides an intermediate level of rendering quality in between full object rendering and a billboard rendering. Others have approached this problem by using proxy structures for complex objects. These approaches are limited, however, in that they cannot deal with concave proxies and their rendering algorithms are not well suited for mixing image-based rendering objects with regular scenes. Furthermore, the rendering algorithms of these approaches are complex and too slow for many if not all real-time rendering environments. Thus, the approaches of others to this problem have not been successful in fulfilling the need for a method and system for rendering that provides an intermediate level of rendering quality in between full object rendering and a billboard rendering.